home *** CD-ROM | disk | FTP | other *** search
/ PC-SIG Library 8 / PC-SIG Library CD-ROM (8th Edition) (1990-04).iso / 001_100 / disk0091 / boggle.bas < prev    next >
Encoding:
BASIC Source File  |  1983-11-02  |  2.9 KB  |  82 lines

  1. 1 REM The number in line 240 represents the game length in seconds.
  2. 2 KEY OFF : CLS
  3. 3 PRINT "This game simulates the popular game of BOGGLE and probably infringes
  4. 4 PRINT "on somebody's patent, trademark, and copyright.  The object is to form
  5. 5 PRINT "as many words within the time limit (3 minutes) as possible.  Each
  6. 6 PRINT "3 letter word counts 1 point, 4 letter words 2 points, etc.  Plurals
  7. 7 PRINT "are allowed but not popular names, etc.  Words shorter than 3 letters
  8. 8 PRINT "are not permitted.  Words may be formed horizontally, vertically,
  9. 9 PRINT "diagonally, backwards, around corners, etc.  Two or more may play." : PRINT : PRINT
  10. 10 RANDOMIZE
  11. 20 DIM BOARD$(16), INDEX(16), DIE$(16,6)
  12. 30 FOR I = 1 TO 16
  13. 40 FOR J = 1 TO 6
  14. 50 READ DIE$(I,J)
  15. 60 NEXT J
  16. 70 NEXT I
  17. 80 DATA C,A,S,E,R,L
  18. 90 DATA M,A,Qu,O,J,B
  19. 100 DATA A,L,I,B,T,Y
  20. 110 DATA B,I,X,O,F,R
  21. 120 DATA A,A,O,I,T,C
  22. 130 DATA D,U,N,O,K,T
  23. 140 DATA R,L,G,W,U,I
  24. 150 DATA N,I,P,E,H,S
  25. 160 DATA M,O,R,A,H,S
  26. 170 DATA G,E,Y,U,K,L
  27. 180 DATA Y,I,E,E,H,F
  28. 190 DATA W,O,S,E,D,N
  29. 200 DATA N,V,D,Z,E,A
  30. 210 DATA C,A,T,E,D,M
  31. 220 DATA S,P,T,L,E,U
  32. 230 DATA T,E,V,I,G,N
  33. 240 GT=18
  34. 300 CLS : LOCATE 1,36 : PRINT "B O G G L E" : LOCATE 3,1 : PRINT "Tumbling the dice...";
  35. 310 FOR J = 1 TO 16
  36. 320 I = 1 + CINT(5*RND)
  37. 330 BOARD$(J) = DIE$(J,I)
  38. 340 NEXT
  39. 345 J = 1 : SUM = 0
  40. 350 WHILE J <= 15
  41. 360 I = 1 + CINT(15*RND)
  42. 370 FLAG = 0
  43. 380 FOR L = 1 TO J
  44. 390 IF INDEX(L) = I THEN FLAG = 1
  45. 400 NEXT
  46. 410 IF FLAG = 0 THEN INDEX(J) = I : J = J + 1 : SUM = SUM + I : PRINT ".";
  47. 420 WEND
  48. 425 PRINT "!"; : INDEX(16) = 136 - SUM
  49. 430 LOCATE 5,1 : PRINT "Type any key when ready to start...";
  50. 440 IF INKEY$ = "" THEN 440
  51. 445 TIME$ = "00:00:00"
  52. 450 GOSUB 1000
  53. 455 AL = 1
  54. 460 ST = 60*VAL(MID$(TIME$,4,2)) + VAL(RIGHT$(TIME$,2))
  55. 470 LOCATE 3,39 : PRINT RIGHT$(TIME$,5)
  56. 480 CT = 60*VAL(MID$(TIME$,4,2)) + VAL(RIGHT$(TIME$,2))
  57. 485 IF (CT > ST+GT-10) AND AL=1 THEN AL=0 : SOUND 200,3 : LOCATE 21,31 : PRINT "10 SECOND WARNING!";
  58. 490 IF CT < ST + GT THEN 470
  59. 500 BEEP : BEEP : CLS : LOCATE 1,36 : PRINT "B O G G L E" : LOCATE 5,1
  60. 510 PRINT "Time's up!!!" : PRINT
  61. 520 PRINT "Type any key to restore screen...";
  62. 530 IF INKEY$ = "" THEN 530
  63. 540 GOSUB 1000
  64. 550 LOCATE 22,1 : PRINT "Type <R> to repeat, any other key to quit...";
  65. 560 Q$ = INKEY$ : IF Q$ = "" THEN 560
  66. 570 IF Q$ = "R" OR Q$ = "r" THEN 300
  67. 580 CLS : KEY ON : END
  68. 1000 CLS : LOCATE 1,36 : PRINT "B O G G L E"
  69. 1005 COLOR 15
  70. 1010 FOR CNT = 1 TO 13 STEP 4
  71. 1020 LOCATE .75*CNT + 8.25,31
  72. 1030 PRINT USING "\\"; BOARD$(INDEX(CNT));
  73. 1040 LOCATE .75*CNT + 8.25,37
  74. 1050 PRINT USING "\\"; BOARD$(INDEX(CNT+1));
  75. 1060 LOCATE .75*CNT + 8.25,43
  76. 1070 PRINT USING "\\"; BOARD$(INDEX(CNT+2));
  77. 1080 LOCATE .75*CNT + 8.25,49
  78. 1090 PRINT USING "\\"; BOARD$(INDEX(CNT+3));
  79. 1100 NEXT CNT
  80. 1105 COLOR 7
  81. 1110 RETURN
  82.